package com.cskaoyan._01datasecurity;

/**
 * @description:
 * @author: 景天
 * @date: 2023/2/22 9:16
 **/
/*
多线程仿真如下场景：
假设A电影院正在上映某电影，该电影有100张电影票可供出售，
现在假设有3个窗口售票。请设计程序模拟窗口售票的场景。
分析:
有3个窗口售票 ---> 3个线程
3个窗口共同售卖100张票----> 3个线程共享了100这个数据
 */
public class Demo {
    public static void main(String[] args) {
        // 创建3个窗口 3个线程
        SellWindow t1 = new SellWindow();
        SellWindow t2 = new SellWindow();
        SellWindow t3 = new SellWindow();

        t1.setName("A窗口");
        t2.setName("B窗口");
        t3.setName("C窗口");

        // start方法启动
        t1.start();
        t2.start();
        t3.start();
    }
}

class SellWindow extends Thread{
    // 定义票
    int tickets = 100;
    // run
    @Override
    public void run() {
       // 模拟卖票的过程
        while (true) {
            // 卖之前进行判断
            if (tickets > 0) {
                System.out.println(getName() + "卖了第"
                        + (tickets--) + "张票");
            }
        }
    }
}